package com.linkgie.galaxyframework.process;

/**
 * 流程定义 ID；
 * 
 * @author Hike
 *
 */
public interface ProcessDefinition {

	/**
	 * 流程编号；
	 * 
	 * @return
	 */
	String getId();

	/**
	 * 流程名称；
	 * 
	 * @return
	 */
	String getName();

	/**
	 * 定义的版本号；
	 * <p>
	 * 
	 * 版本号的规则由实现者定义；
	 * 
	 * @return
	 */
	long getVersion();

	/**
	 * 流程默认的条件验证器的类型；
	 * <p>
	 * 如果未设置，则返回 null；
	 * 
	 * @return
	 */
	String getConditionValidatorType();

	/**
	 * 流程默认的节点预处理器的类型；
	 * <p>
	 * 如果未设置，则返回 null；
	 * 
	 * @return
	 */
	String getNodeTransferedPrehandlerType();

	/**
	 * 流程完成处理器的类型；
	 * <p>
	 * 如果未设置，则返回 null；
	 * 
	 * @return
	 */
	String getProcessCompletedHandlerType();

	/**
	 * 流程节点图；
	 * 
	 * @return
	 */
	ProcessNodeMap getNodeMap();

	/**
	 * 流程的起点；
	 * 
	 * @return
	 */
	default StartPoint getStartPoint() {
		return getNodeMap().getStartingPoint();
	}
}
